package interfaz;

import gestores.GestorCompetencia;
import gestores.GestorEncuentro;
import javax.swing.JPanel;
import java.awt.GridBagLayout;
import javax.swing.JLabel;
import java.awt.GridBagConstraints;
import java.awt.Color;
import java.awt.Insets;
import java.awt.Toolkit;
import javax.swing.ButtonGroup;
import javax.swing.JTextField;
import javax.swing.JRadioButton;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;

import componentes.Competencia;
import componentes.Encuentro;
import componentes.Usuario;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.SQLException;

public class GestionarRtdoFinal extends JPanel {
	private JTextField txtNombreCompetencia;
	private JLabel lblGestionarResultados; 
	private JLabel NombreCompetencia;
	private JButton btnGuardar;
	private JButton btnCancelar;
	private JLabel lblParticipanteAusente;
	private JRadioButton eq1;
	private JRadioButton eq2;
	private JLabel lblParticipanteAusente_1;
	private JRadioButton rdbtnAusenteE1;
	private JRadioButton rdbtnAusenteE2;
	private ButtonGroup groupPartGanador;
	private JLabel lblNumeroDeFecha;
	private JLabel lblNumeroDeEncuentro;
	private JLabel lblError;
	private JTextField textFecha;
	private JTextField textEncuentro;
	
	/**
	 * Create the panel.
	 * @param competencia 
	 * @param pantallaInicialUserReg 
	 * @param usuarioLogueado 
	 * @param panelAnterior 
	 * @param panelPrincipal 
	 */
	public GestionarRtdoFinal(Encuentro encuentro, Competencia competencia, JPanel panelAnterior, JPanel panelPrincipal, Usuario usuarioLogueado, PantallaInicialUserReg pantallaInicialUserReg) {
		setBackground(new Color(236, 141, 4));
		GridBagLayout gridBagLayout = new GridBagLayout();
		gridBagLayout.columnWidths = new int[]{110, 60, 51, 0};
		gridBagLayout.rowHeights = new int[]{29, 3, 0, 0, 0, 0, 0, 0, 0};
		gridBagLayout.columnWeights = new double[]{1.0, 1.0, 0.0, Double.MIN_VALUE};
		gridBagLayout.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
		setLayout(gridBagLayout);
		
		lblGestionarResultados = new JLabel("Gestionar Resultado");
		txtNombreCompetencia = new JTextField();
		NombreCompetencia = new JLabel("Nombre de la Competencia:");
		lblGestionarResultados.setFont(new Font("Tahoma", Font.BOLD, 11));
		btnGuardar = new JButton("Guardar");
		btnCancelar = new JButton("Cancelar");
		eq1 = new JRadioButton("Equipo 1");
		rdbtnAusenteE1 = new JRadioButton("Equipo 1");
		rdbtnAusenteE2 = new JRadioButton("Equipo 2");
		groupPartGanador= new ButtonGroup();
		lblNumeroDeEncuentro = new JLabel("Numero de Encuentro:");
		lblParticipanteAusente_1 = new JLabel("Participante Ausente:");
		
		inicializar(encuentro, competencia,panelAnterior, panelPrincipal, usuarioLogueado, pantallaInicialUserReg);
		
		
	}
		public void inicializar(final Encuentro encuentro,final Competencia competencia, final JPanel panelAnterior, JPanel panelPrincipal, final Usuario usuarioLogueado, final PantallaInicialUserReg pantallaInicialUserReg){
		
			
			
			GridBagConstraints gbc_lblGenerarResultadosDe = new GridBagConstraints();
			gbc_lblGenerarResultadosDe.gridwidth = 3;
			gbc_lblGenerarResultadosDe.insets = new Insets(0, 0, 5, 0);
			gbc_lblGenerarResultadosDe.gridx = 0;
			gbc_lblGenerarResultadosDe.gridy = 0;
			add(lblGestionarResultados, gbc_lblGenerarResultadosDe);
					
			GridBagConstraints gbc_lblNombreCompetencia = new GridBagConstraints();
			gbc_lblNombreCompetencia.weighty = 0.5;
			gbc_lblNombreCompetencia.anchor = GridBagConstraints.SOUTHEAST;
			gbc_lblNombreCompetencia.insets = new Insets(0, 0, 5, 5);
			gbc_lblNombreCompetencia.gridx = 0;
			gbc_lblNombreCompetencia.gridy = 1;
			add(NombreCompetencia, gbc_lblNombreCompetencia);
					
			GridBagConstraints gbc_textField = new GridBagConstraints();
			gbc_textField.anchor = GridBagConstraints.SOUTH;
			gbc_textField.gridwidth = 2;
			gbc_textField.insets = new Insets(0, 0, 5, 0);
			gbc_textField.fill = GridBagConstraints.HORIZONTAL;
			gbc_textField.gridx = 1;
			gbc_textField.gridy = 1;
			add(txtNombreCompetencia, gbc_textField);
			txtNombreCompetencia.setColumns(10);
			txtNombreCompetencia.setBackground(new Color(236, 141, 4));
			txtNombreCompetencia.setBorder(null);
			txtNombreCompetencia.setEditable(false);
			txtNombreCompetencia.setText(competencia.getNombre());
			
			lblNumeroDeFecha = new JLabel("Numero de Fecha:");
			GridBagConstraints gbc_lblNumeroDeFecha = new GridBagConstraints();
			gbc_lblNumeroDeFecha.weighty = 0.5;
			gbc_lblNumeroDeFecha.anchor = GridBagConstraints.EAST;
			gbc_lblNumeroDeFecha.insets = new Insets(0, 0, 5, 5);
			gbc_lblNumeroDeFecha.gridx = 0;
			gbc_lblNumeroDeFecha.gridy = 2;
			add(lblNumeroDeFecha, gbc_lblNumeroDeFecha);
			
			textFecha = new JTextField();
			GridBagConstraints gbc_textField1 = new GridBagConstraints();
			gbc_textField1.insets = new Insets(0, 0, 5, 5);
			gbc_textField1.fill = GridBagConstraints.HORIZONTAL;
			gbc_textField1.gridx = 1;
			gbc_textField1.gridy = 2;
			add(textFecha, gbc_textField1);
			textFecha.setColumns(10);
			textFecha.setBackground(new Color(236, 141, 4));
			textFecha.setBorder(null);
			textFecha.setEditable(false);
			textFecha.setText(encuentro.getFecha()+"");
			
			GridBagConstraints gbc_lblNumeroDeEncuentro = new GridBagConstraints();
			gbc_lblNumeroDeEncuentro.weighty = 1.0;
			gbc_lblNumeroDeEncuentro.anchor = GridBagConstraints.NORTHEAST;
			gbc_lblNumeroDeEncuentro.insets = new Insets(0, 0, 5, 5);
			gbc_lblNumeroDeEncuentro.gridx = 0;
			gbc_lblNumeroDeEncuentro.gridy = 3;
			add(lblNumeroDeEncuentro, gbc_lblNumeroDeEncuentro);
			
			textEncuentro = new JTextField();
			GridBagConstraints gbc_textField_1 = new GridBagConstraints();
			gbc_textField_1.anchor = GridBagConstraints.NORTHEAST;
			gbc_textField_1.insets = new Insets(0, 0, 5, 5);
			gbc_textField_1.fill = GridBagConstraints.HORIZONTAL;
			gbc_textField_1.gridx = 1;
			gbc_textField_1.gridy = 3;
			add(textEncuentro, gbc_textField_1);
			textEncuentro.setColumns(10);
			textEncuentro.setBackground(new Color(236, 141, 4));
			textEncuentro.setBorder(null);
			textEncuentro.setEditable(false);
			textEncuentro.setText(encuentro.getnEncuentro()+"");
			
			GridBagConstraints gbc_lblParticipanteAusente_1 = new GridBagConstraints();
			gbc_lblParticipanteAusente_1.weighty = 0.5;
			gbc_lblParticipanteAusente_1.anchor = GridBagConstraints.EAST;
			gbc_lblParticipanteAusente_1.insets = new Insets(0, 0, 5, 5);
			gbc_lblParticipanteAusente_1.gridx = 0;
			gbc_lblParticipanteAusente_1.gridy = 4;
			add(lblParticipanteAusente_1, gbc_lblParticipanteAusente_1);
			
			rdbtnAusenteE1.setBackground(new Color(236, 141, 4));
			GridBagConstraints gbc_rdbtnEquipo = new GridBagConstraints();
			gbc_rdbtnEquipo.insets = new Insets(0, 0, 5, 5);
			gbc_rdbtnEquipo.gridx = 1;
			gbc_rdbtnEquipo.gridy = 4;
			add(rdbtnAusenteE1, gbc_rdbtnEquipo);
			
			rdbtnAusenteE2.setBackground(new Color(236, 141, 4));
			GridBagConstraints gbc_rdbtnEquipo_1 = new GridBagConstraints();
			gbc_rdbtnEquipo_1.insets = new Insets(0, 0, 5, 0);
			gbc_rdbtnEquipo_1.gridx = 2;
			gbc_rdbtnEquipo_1.gridy = 4;
			add(rdbtnAusenteE2, gbc_rdbtnEquipo_1);
			lblParticipanteAusente = new JLabel("Participante Ganador:");
			
			GridBagConstraints gbc_lblParticipanteAusenteEn = new GridBagConstraints();
			gbc_lblParticipanteAusenteEn.weighty = 0.5;
			gbc_lblParticipanteAusenteEn.anchor = GridBagConstraints.EAST;
			gbc_lblParticipanteAusenteEn.insets = new Insets(0, 0, 5, 5);
			gbc_lblParticipanteAusenteEn.gridx = 0;
			gbc_lblParticipanteAusenteEn.gridy = 5;
			add(lblParticipanteAusente, gbc_lblParticipanteAusenteEn);
			
			
			eq1.setBackground(new Color(236, 141, 4));
			GridBagConstraints gbc_eq1 = new GridBagConstraints();
			gbc_eq1.weighty = 0.5;
			gbc_eq1.insets = new Insets(0, 0, 5, 5);
			gbc_eq1.gridx = 1;
			gbc_eq1.gridy = 5;
			add(eq1, gbc_eq1);
			eq2 = new JRadioButton("Equipo 2");
			
			eq2.setBackground(new Color(236, 141, 4));
			GridBagConstraints gbc_eq2 = new GridBagConstraints();
			gbc_eq2.weighty = 0.5;
			gbc_eq2.insets = new Insets(0, 0, 5, 0);
			gbc_eq2.gridx = 2;
			gbc_eq2.gridy = 5;
			add(eq2, gbc_eq2);
			
			lblError = new JLabel("*Debe seleccionar un participante ganador");
			GridBagConstraints gbc_lbldebeSeleccionarUn = new GridBagConstraints();
			gbc_lbldebeSeleccionarUn.anchor = GridBagConstraints.SOUTHWEST;
			gbc_lbldebeSeleccionarUn.weighty = 1.0;
			gbc_lbldebeSeleccionarUn.gridwidth = 2;
			gbc_lbldebeSeleccionarUn.insets = new Insets(0, 30, 5, 5);
			gbc_lbldebeSeleccionarUn.gridx = 0;
			gbc_lbldebeSeleccionarUn.gridy = 6;
			add(lblError, gbc_lbldebeSeleccionarUn);
			lblError.setForeground(new Color(236, 141, 4));
						
			GridBagConstraints gbc_btnAceptar = new GridBagConstraints();
			gbc_btnAceptar.weighty = 1.0;
			gbc_btnAceptar.weightx = 1.0;
			gbc_btnAceptar.insets = new Insets(0, 0, 0, 5);
			gbc_btnAceptar.gridx = 1;
			gbc_btnAceptar.gridy = 7;
			add(btnGuardar, gbc_btnAceptar);
						
			GridBagConstraints gbc_btnCancelar = new GridBagConstraints();
			gbc_btnCancelar.weighty = 1.0;
			gbc_btnCancelar.weightx = 1.0;
			gbc_btnCancelar.gridx = 2;
			gbc_btnCancelar.gridy = 7;
			add(btnCancelar, gbc_btnCancelar);

			groupPartGanador.add(eq1);
			groupPartGanador.add(eq2);
			
		
			if(encuentro.getResultado().getGanador().equals("Participante 1")){
				eq1.setSelected(true);
			}
			if(encuentro.getResultado().getGanador().equals("Participante 2")){
				eq2.setSelected(true);
			}
			
			//guardo el nuevo resultado
			
			
			rdbtnAusenteE1.addMouseListener(new MouseAdapter() {
				@Override
				public void mousePressed(MouseEvent e) {
					if(rdbtnAusenteE1.isSelected()){
						rdbtnAusenteE1.setSelected(false);
					}
					else{
						rdbtnAusenteE1.setSelected(true);
						rdbtnAusenteE2.setSelected(false);
					}
				}
				@Override
				public void mouseReleased(MouseEvent e) {
					
					if(rdbtnAusenteE1.isSelected()){
						rdbtnAusenteE1.setSelected(false);
					}
					else{
						rdbtnAusenteE1.setSelected(true);
						rdbtnAusenteE2.setSelected(false);
					}
				}
			});
			
			rdbtnAusenteE2.addMouseListener(new MouseAdapter() {
				@Override
				public void mousePressed(MouseEvent e) {
					if(rdbtnAusenteE2.isSelected()){
						rdbtnAusenteE2.setSelected(false);
					}
				else{
					rdbtnAusenteE2.setSelected(true);
					rdbtnAusenteE1.setSelected(false);
					}
				}
				
				@Override
				public void mouseReleased(MouseEvent e) {
					if(rdbtnAusenteE2.isSelected()){
							rdbtnAusenteE2.setSelected(false);
					}
					else{
						rdbtnAusenteE2.setSelected(true);
						rdbtnAusenteE1.setSelected(false);
					}
				}
			});
			
			
			
			
			//listener
			btnGuardar.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					
					if(rdbtnAusenteE1.isSelected()){
						encuentro.setAsistioPart1("0");
					}
					else{
						encuentro.setAsistioPart1("1");
					}
					
					if(rdbtnAusenteE2.isSelected()){
						encuentro.setAsistioPart2("0");
					}
					else{
						encuentro.setAsistioPart2("1");
					}
					
					if((rdbtnAusenteE1.isSelected() && eq1.isSelected()) || (rdbtnAusenteE2.isSelected() && eq2.isSelected())){
						lblError.setText("*El ganador no puede estar ausente");
						lblError.setForeground(Color.red);
						Toolkit.getDefaultToolkit().beep();
						
						
					}else{
						if(eq1.isSelected() || eq2.isSelected()){
							lblError.setForeground(new Color(236, 141, 4));
							if(eq1.isSelected()){
								encuentro.getResultado().setGanador("Participante 1");
								encuentro.getResultado().setPerdedor("Participante 2");
							}
							else{
								encuentro.getResultado().setGanador("Participante 2");
								encuentro.getResultado().setPerdedor("Participante 1");
							}
							
							try {
								GestorEncuentro.getInstance().guardarResultado(encuentro, competencia);
							} catch (SQLException e1) {
								e1.printStackTrace();
							}
							String id_competencia = null;
							try {
								id_competencia = GestorCompetencia.getInstance().getIdCompetencia(competencia.getNombre());
							} catch (SQLException e1) {
								e1.printStackTrace();
							}
							GestorEncuentro.getInstance().setAsistenciaParticipantes(id_competencia, encuentro);
							setVisible(false);
							panelAnterior.setVisible(true);
						}
						else{
							lblError.setText("*Debe seleccionar un participante ganador");
							lblError.setForeground(Color.red);
							Toolkit.getDefaultToolkit().beep();
						}
					}
					
				
				
				
				}
			});

			btnCancelar.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					setVisible(false);
					panelAnterior.setVisible(true);
				}
			});
			
	}
}
